package com.vhall.component.service.chat;

import com.alibaba.fastjson.JSONObject;
import com.vhall.component.entity.chat.vo.*;

import java.util.Map;

/**
 * @author xianglei
 * @date 2021/4/25 16:07
 */
public interface ChatService {

    /**
     * 历史聊天
     *
     * @param reqVo
     * @return
     */
    Map<String, Object> lists(ChatListReqVo reqVo);

    /**
     * 历史聊天（优化版）
     *
     * @param reqVo
     * @return
     */
    Map<String, Object> listMessage(ChatListReqVo reqVo);

    /**
     * 待审核消息列表
     *
     * @param reqVo
     * @return
     */
    Map<String, AuditListRspVo> auditLists(ChatAuditListReqVo reqVo);

    /**
     * 获取历史消息数据
     *
     * @param reqVo
     * @return
     */
    JSONObject messageLists(MessageListsReqVo reqVo);

    /**
     * 设置审核开关接口
     *
     * @param reqVo
     * @return
     */
    JSONObject setChannelSwitch(ChannelSwitchSetReqVo reqVo);


    /**
     * 获取审核开关状态接口
     *
     * @param reqVo
     * @return
     */
    JSONObject getChannelSwitch(ChannelSwitchReqVo reqVo);


    /**
     * 设置是否自动处理聊天数据接口（switch开启能发,不能收,会转到审核频道）
     *
     * @param reqVo
     * @return
     */
    JSONObject setChannelSwitchOptions(ChannelSwitchOptionReqVo reqVo);

    /**
     * 审核消息操作
     *
     * @param reqVO
     * @return
     */
    Boolean applyMessageSend(ApplyMessageSendReqVO reqVO);

    /**
     * 图片上传
     *
     * @param reqVo
     * @return
     */
    Map<String, Object> upload(ChatUploadReqVo reqVo);

    /**
     * 图片上传
     *
     * @param imgBase64 base64 encode string
     * @return
     */
    Map<String, Object> imageUpload(String imgBase64);

    /**
     * 发送聊天消息
     * @param reqVO
     * @return
     */
    Boolean sendMessage(SendMessageReqVO reqVO);
}
